import { useState } from "react";
const SITES = [
{
id: "oracle",
emoji: "๐ฎ",
name: "The Oracle",
tagline: "Receive your prophecy",
color: "#c9a84c",
desc: "Main revenue hub โ AI prophecies, Ko-fi tips, wax seal reveal",
kofi: true,
},
{
id: "tarot",
emoji: "๐",
name: "Midnight Tarot",
tagline: "Let the cards speak",
color: "#9b59b6",
desc: "3-card spread with AI interpretation โ links to Oracle",
kofi: false,
},
{
id: "horoscope",
emoji: "โญ",
name: "Celestial Signs",
tagline: "Your stars, decoded",
color: "#4ecdc4",
desc: "Daily horoscope by zodiac sign โ repeat visitors daily",
kofi: false,
},
{
id: "dreams",
emoji: "๐ญ",
name: "Dream Weaver",
tagline: "What your dreams reveal",
color: "#e74c3c",
desc: "Input your dream โ mystical AI interpretation โ Oracle CTA",
kofi: false,
},
{
id: "numerology",
emoji: "๐ข",
name: "Numbers & Fate",
tagline: "Your number holds your destiny",
color: "#2ecc71",
desc: "Name + birthdate โ life path number โ SEO powerhouse",
kofi: false,
},
{
id: "manifestation",
emoji: "โจ",
name: "Manifest Daily",
tagline: "Speak your reality into existence",
color: "#ff6b9d",
desc: "Daily affirmation generator โ builds loyal returning users",
kofi: false,
},
];
function generateHTML(site, groqKey, oracleUrl) {
const prompts = {
oracle: `You are a mystical oracle from an ancient realm. The user seeks a prophecy. Give a deeply personal, poetic prophecy of 3-4 sentences. Be mysterious, evocative, and slightly cryptic. Use beautiful language. End with a short warning or gift. Do NOT use bullet points.`,
tarot: `You are a tarot master. The user has drawn 3 cards: Past, Present, Future. Generate 3 fitting tarot card names and give a flowing, narrative reading of 3-4 sentences connecting all three. Be mystical and poetic.`,
horoscope: `You are an astrologer channeling cosmic wisdom. Give today's horoscope for the provided zodiac sign. 3-4 sentences, personal and specific, covering love, career, and energy. Be evocative and inspiring.`,
dreams: `You are a dream interpreter with access to ancient symbolic wisdom. The user describes their dream. Interpret it in 3-4 sentences, revealing hidden meanings, symbols, and what it says about their current life path. Be mystical and insightful.`,
numerology: `You are a numerologist. Calculate the life path number from the provided birthdate (sum all digits until single digit, except 11, 22, 33). Reveal its meaning in 3-4 sentences: personality, destiny, and a specific message for this year.`,
manifestation: `You are a manifestation guide and life coach. Create a powerful, personalized daily affirmation set of 3 short affirmations based on the user's intention. Make them present-tense, emotionally resonant, and specific. Format: each affirmation on its own line starting with "I ".`,
};
const uiBlocks = {
oracle: `
Single index.html โ ZIP โ CF Pages Direct Upload.
No build step. No Node. No terminal. No failures.
{[
{
n: "1",
title: "ZIP your index.html",
body: (
<>
On Android: Open Files app โ long-press oracle.html โ Compress / Create ZIP
โ ๏ธ The ZIP must contain only index.html (rename from oracle.html to index.html first)
On iPhone: Long-press โ Compress
>
),
},
{
n: "2",
title: "Go to pages.cloudflare.com",
body: <>Log in โ Workers & Pages โ Pages โ Create a project โ "Upload assets" (NOT "Connect Git")>,
},
{
n: "3",
title: "Name your project",
body: <>Type a name like oracle-main or midnight-tarot โ your URL will be name.pages.dev>,
},
{
n: "4",
title: "Upload the ZIP",
body: <>Tap "Select from computer" โ choose your ZIP โ wait for upload bar โ tap "Deploy site" โ ๏ธ Do NOT tap away โ wait for the green checkmark>,
},
{
n: "5",
title: "Visit your live site",
body: <>yourname.pages.dev is live instantly. Free. HTTPS auto. No expiry. Repeat for all 6 sites with different project names.>,
},
{
n: "6",
title: "Update a site anytime",
body: <>CF Pages โ your project โ Deployments โ "Upload new version" โ upload new ZIP โ Deploy. Done.>,
},
].map(({ n, title, body }) => (
{n}
{title}
{body}
))}
โฆ FREE TIER LIMITS (Cloudflare Pages)
โ Unlimited sites (up to 100 projects)
โ 500 deployments/month per project
โ Unlimited bandwidth
โ Custom domain (free)
โ Auto HTTPS
โ Forever free โ no credit card needed
โฆ COMMON MISTAKES โ AVOID THESE
โ ZIP contains a folder instead of the file directly
โ File is named oracle.html not index.html
โ Choosing "Connect to Git" instead of "Upload assets"
โ Closing the tab before deploy finishes
โ Using _worker.js or functions/ folder (not needed)
)}
โฆ ORACLE ECOSYSTEM BUILDER โฆ
);
}
// Helper components
function Card({ children }) {
return (
{children}
);
}
function Label({ children }) {
return (
{children}
);
}
function InfoBox({ children, color }) {
return (